‘In-Reply-To:’句付加スクリプト

動作内容:

・電信八号で、スレッド構築をより確実に行うため、フォルダ内の全メイ
 ルを対象として、In-Reply-To: がついていないメイル(OEから等)
 に、References: の最後尾のIDをコピーししてIn-Reply-To: 句として
 挿入する(変更前のメイルはゴミ缶に移動します)。

動作確認環境:

 電信八号(V321.2b5以降で確認しています)
 電極Z号化計画(Version 1.33で確認しています)
 (同プラグイン)外部プログラム実行(Version 1.11で確認しています)
 Perlが動作する環境

使用方法:

 1.下のスクリプトをコピーし、適当な名前で保存する
    例:addirta.pl
   その際、2行目の記述を適宜書き換えて下さい。
    $tra="d:/program/den8/denshin8/TRASH/";
     ...ゴミ缶フォルダのパス(絶対パスのみ)
      「TRASH.CAN」ではありません、ご注意下さい
    (注)パス区切りは‘\’ではなく‘/’で指定します

 2.電極Z号化計画−外部プログラム実行 にプログラムの追加を行う
    例:(パスは必要に応じてご変更ください)

     「外部プログラム(フォルダメニュー用)の編集」への登録
     ・メニュー表示文字列:In-Reply-Toの付加
     ・実行するプログラム:perl addirta.pl %d
     ・表示条件:常に
     ・プログラム終了時にフォルダ表示を更新する:チェックなし

判っている不具合および改善を要す箇所:

 ゴミ缶への移動時に、9999.TXTを超過した分は仮のファイル名をつけま
 す(「XXXX-1.TXT」等)。電信八号から認識されずに残ったままになり
 ますので、適宜手動で処理を行う必要があります。
 また、操作時に、ゴミ缶のキャッシュが自動で更新されません。

謝辞:

 最後になりましたが、電信八号を開発された石岡さんと電八倶楽部のみ
 なさん、電極Z号化計画およびプラグインを開発された山田さんにこの
 場を借りてお礼申し上げます。
 いつも便利に使用させて頂き、ありがとうございます。こんな素晴らし
 いソフトをフリーで公開して下さっているなんて、本当に感激です。


付録:

 電信八号オフィシャルサイト http://denshin8.esprix.net/
 山田さんのホームページ http://www.kh.rim.or.jp/~s-yamada/


以上です。拙文をわざわざお読み頂き、ありがとうございました。

-- 
Osamu Ogawa / 小川 修
mailto:jikoman@ogawa.8k.com

# addirta.pl 2000-10-27 $tra="d:/program/den8/denshin8/TRASH/"; # Write your TRASH's path (not TRASH.CAN) $fol=&dchange($ARGV[0])."/"; @fileall=(); @tnm=(); opendir(DIR,$fol); while ($file = readdir(DIR)) { if (&small($file)=~/^[0-9][0-9][0-9][0-9].txt$/) { push(@fileall,$file); } } closedir(DIR); opendir(DIR,$tra); while ($file = readdir(DIR)) { if (&small($file)=~/^[0-9][0-9][0-9][0-9].txt$/) { push(@tnm,"0".substr($file,0,4)); } elsif (&small($file)=~/^[0-9][0-9][0-9][0-9]-.*.txt$/) { $file=~s/^(.*)-(.*)\..../\2\1/; push(@tnm,$file); } } closedir(DIR); if(@tnm){ @tso=sort(@tnm); $tln=pop(@tso)+1; }else{ $tln=0; } $tlo=""; while ($file=shift(@fileall)) { open(INI,$fol.$file); @lines=<INI>; close(INI); $irt=""; $ref=""; @new=(); $rfl=-1; $cur=shift(@lines); if ($cur ne "\n") { $rfl=0; unshift(@lines,$cur); } while ($cur=shift(@lines)) { if (&small($cur)=~/^references: /) { @new1=@new; @new=$cur; $ref=$cur; $cur=shift(@lines); while ($cur=~/^[\s\t]/) { push(@new,$cur); $ref=$cur; $cur=shift(@lines); } unshift(@lines,$cur); $ind1=index($ref,"<"); $ind2=index(substr($ref,$ind1+1),"<"); for(;;){ if ($ind2 eq -1) { last; } $ref=substr($ref,$ind1+$ind2); $ind1=index($ref,"<"); $ind2=index(substr($ref,$ind1+1),"<"); } $ref=substr($ref,$ind1); } else { push(@new,$cur); } if (&small($cur)=~/^in-reply-to: /) { $irt=$cur; } if ($cur eq "--------\n") { last; } } unless ($irt) { if ($ref) { push(@new1,"In-Reply-To: Add ".$ref); $rfl=-1; } } $uid=shift(@lines); if (&small($uid)=~/^x-uidl: /) { $spa=shift(@lines); if ($spa eq "\n") { $spa=pop(@new); $rfl=-1; } unshift(@lines,$spa); } unshift(@lines,$uid); if ($rfl) { if ($tln > 9999) { $tlo="-".substr($tln,0,length($tln)-4); } $tls=substr("d000".$tln,length($tln)).$tlo.".TXT"; system 'move '.&dcrev($fol.$file).' '.dcrev($tra.$tls); $tln=$tln+1; open(OUT,"> ".$fol.$file); print OUT @new1; print OUT @new; print OUT @lines; close(OUT); } } exit(0); sub small { my($a)=@_; $a=~tr/A-Z/a-z/; $a; } sub dcrev { my($a)=@_; $a=~s/\//\\/g; $a; } sub dchange { my($a)=@_; $a=~s/\\/\//g; $a; }
まえにもどる